/*
 * Clase encargada de realizar los procesos de BackUp y Restor de la estructura 
 * y la información de la base de datos
 */
package Modelo;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author ceballos
 */
public class ClsPersistencia implements Serializable {

    /**
     *
     */
    public ClsPersistencia() {
    }

    public String backup1() throws IOException {
        String buFile = "bu_dbhostals_" + new SimpleDateFormat("dd-MM-yyyy-H-m-s").format(new Date()) + ".sql";
        String sep = System.getProperty("file.separator");
        String path = System.getProperty("user.dir") + sep + "Data" + sep + "BackUps" + sep;
        String sal = "ERROR";
        Runtime runtime = Runtime.getRuntime();
        File f = new File(path);
        if (!f.exists()) {
            f.mkdirs();
        }
        if (!(System.getProperty("os.name").toUpperCase()).contains("WIN")) {
            /* esta linea se descomenta cuando la aplicación este en el servidor
             * String[] cmd = {"sh", "-c", "/usr/bin/mysqldump --password=admin --user=root --databases dbHostals > " + path + buFile};
             */
            String[] cmd = {"sh", "-c", "/usr/bin/mysqldump --password=admin --user=root --databases dbHostals > " + "/home/" + buFile};
            runtime.exec(cmd);
            sal = buFile;
        } else {
            /* esta linea se descomenta cuando la aplicación este en el servidor
             * String cmd = "cmd /c D:\\wamp\\bin\\mysql\\mysql5.1.53\\bin\\mysqldump --user=root --databases dbHostals > " + path + buFile;
             */
            String cmd = "cmd /c D:\\wamp\\bin\\mysql\\mysql5.1.53\\bin\\mysqldump --user=root --databases dbHostals > " + "D:\\" + buFile;
            runtime.exec(cmd);
            sal = buFile;
        }
        return sal;
    }

    public String listRestor() {
        String list = "";
        String sep = System.getProperty("file.separator");
        String path = System.getProperty("user.dir") + sep + "Data" + sep + "BackUps";
        //eliminar las lineas entre los comentarios cuando la aplicacion este en el servidor
        if (!(System.getProperty("os.name").toUpperCase()).contains("WIN")) {
            path = "/home/";
        } else {
            path = "D:\\";
        }
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        File dir = new File(path);
        String[] list1 = dir.list();
        int i = 0;
        while (i < list1.length) {
            if (list1[i].contains("sql"))
            {
                list +=  list1[i]+"\n";
            }
            i++;
        }
        return list;
    }

    public boolean restor(String bu) {
        String sep = System.getProperty("file.separator");
        String path = System.getProperty("user.dir") + sep + "Data" + sep + "BackUps" + sep;
        Runtime runtime = Runtime.getRuntime();

        if (!(System.getProperty("os.name").toUpperCase()).contains("WIN")) {
            try {
                /*esta linea se descomenta cuando este la aplicación en el servidor
                 * String[] cmd = {"sh", "-c", "/usr/bin/mysql --password=admin --user=root --databases dbHostals < " + path + bu};
                 */
                String[] cmd = {"sh", "-c", "/usr/bin/mysql --password=admin --user=root --databases dbHostals < " + "/home/" + bu};
                runtime.exec(cmd);
                return true;
            } catch (IOException ex) {
                Logger.getLogger(ClsPersistencia.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            }
        } else {
            try {
                /*esta linea se descomenta cuando este la aplicación en el servidor
                 * String cmd = "cmd /c D:\\wamp\\bin\\mysql\\mysql5.1.53\\bin\\mysql --user=root  dbHostals < " + path + bu;
                 */
                String cmd = "cmd /c D:\\wamp\\bin\\mysql\\mysql5.1.53\\bin\\mysql --user=root  dbHostals < " + "D:\\" + bu;
                runtime.exec(cmd);
                return true;
            } catch (IOException ex) {
                Logger.getLogger(ClsPersistencia.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            }
        }
    }
}
